// 实现可迭代接口 （Iterable)

// 实现可迭代接口
// const obj = {
//     // 必须含有迭代器的iterator方法
//     [Symbol.iterator]: function () {
//         // 实现了迭代器接口 iterator 内部必须含有一个用于迭代的next方法
//         return {
//             next: function () {
//                 // 实现了迭代结果接口 必须有value 用于表示当前迭代值 和 done 用于表示迭代是否结束
//                 return {
//                     value: 'zce',
//                     done: true
//                 }
//             }
//         }
//     }
// }

const obj = {
    store: ['foo', 'bar', 'baz'],

    [Symbol.iterator]: function () {
        let index = 0
        const self = this

        return {
            next: function () {
                const result =  {
                    value: self.store[index],
                    done: index >= self.store.length
                }
                index++
                return result
            }
        }
    }
}

for (const item of obj) {
    console.log('循环体', item);
}